Docker命令大全与脚本使用 您所在的位置:网站首页 docker 主机执行容器命令 Docker命令大全与脚本使用

Docker命令大全与脚本使用

2023-06-08 15:34| 来源: 网络整理| 查看: 265

文章目录 什么是DockerDocker的安装和卸载Docker的基本命令镜像操作命令容器操作命令 解析复合指令脚本调用常见问题解析

什么是Docker

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。docker容器类似虚拟机,可以执行包含启动,停止,删除等。每个容器间是相互隔离的。容器中会运行特定的运用,包含特定应用的代码及所需的依赖文件。docker的镜像概念类似虚拟机的镜像。是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。

Docker的安装和卸载 //Ubuntu安装docker sudo apt install docker.io //CentOS安装docker sudo yum install docker.io //验证是否安装成功 docker //卸载引擎Ubuntu sudo apt-get purge docker.io //卸载引擎Centos sudo yum remove docker.io //删除Docker数据目录 sudo rm -rf /var/lib/docker Docker的基本命令 镜像操作命令 docker --help #查看所有的指令 帮助指令 #镜像操作 docker images #查看所有的镜像 -a列出所有镜像 -q只显示镜像ID docker inspect [image ID] #根据镜像ID获取镜像的详细信息 docker tag [旧名称]:[旧标签] [新名称]:[新标签] # 修改镜像的名称和标签 docker rmi [标签]/[镜像ID] #删除镜像 docker save -o [保存路径]/[文件名].tar [镜像名称]:[版本号] / [镜像ID] #导出镜像 docker load -i [保存路径]/[文件名].tar #导入镜像 ##通过镜像ID导出的镜像没有名字 推荐使用镜像名称导出镜像包 docker save -o package.tar testname:1.0.0 #导出压缩包 sudo tar -zcvf package.tar.gz package.tar docker save testname:1.0.0 | gzip > package.tar.gz docker load -i package.tar.gz #导入压缩之后的镜像包 docker load --name myimage:v1.0 --label "version=v1.0" myimage.tar #load的时候指定镜像的名称 容器操作命令 #容器操作 docker create -it [镜像ID]/[镜像名称] #创建镜像 -i容器输入保持打开 -t docker分配伪终端 docker start [容器ID/容器名称] #启动容器 docker stop [容器ID/容器名称] #停止容器 docker restart [容器ID/容器名称] #重启容器 docker run [选项] 镜像名 /bin/bash #创建并启动一个容器 docker ps #查看处于运行状态的容器 -a 显示所有容器 -q只显示ID -aq 显示所有的ID -s显示容器大小 docker exec [option] [容器ID/容器名称] #进入容器 -i容器输入保持打开 -t分配一个伪终端 -c避免交互直接在容器内执行命令 #sudo docker exec -it ec39c06d549b /bin/bash #exit 或者 Ctrl+D退出编辑器 docker logs container_id #查看容器内的标准输出 docker export container_id > ubuntu.tar #导出docker本地容器 cat docker/ubuntu.tar | docker import - test/docker:V1 #从容器快照导入为镜像test/docker:V1 docker import http://url.addr #通过指定URL来导入镜像 docker port #查看端口的绑定情况 #docker port adoring_stonebraker 5000 #网络查询 docker network create -d bridge test-net #新建一个docker网络 docker network ls #查看网络列表 docker run -itd --name test1 --network test-net ubuntu /bin/bash #运行一个容器并连接到新建的test-net网络 docker export [容器ID/名称] > 文件名 #容器的导出 cat [文件名] | docker improt [生成的镜像名称:标签] #容器的导入 docker rm [容器名称/ID] #删除容器 docker commit [选项] [容器ID或容器名] [仓库名:标签] #将容器创建为镜像 #-a 修改人 -m备注 -c使用dockerfile指令来创建 -p commit的时候暂停容器 docker stop $(docker ps -a -q) #停止所有容器 docker rm $(docker ps -a -q) #删除所有容器 sudo docker create -it --name=[容器名称] [镜像ID/镜像名称] /bin/bash ##以特定名称创建容器容器 docker ps -a --no-trunc ## 查看容器的详细运行命令 docker version #查看版本 docker info #查看容器的安装情况 docker network ls #查看网络列表 docker network cat #自建bridge网络 docker cp [容器ID:绝对路径] [绝对路径(物理机)] #容器文件拷贝到物理机 docker cp [绝对路径(物理机)] [容器ID:绝对路径] #物理机文件拷贝到容器 docker pull #从远程拉取一个镜像 docker push #将一个镜像推送到远程仓库 docker build #构建容器镜像 docker pause #暂停容器中的所有进程 docker top #查看容器中运行的进程信息 docker stat # 显示容器资源的使用情况 解析复合指令 #创建并运行容器 docker run -d -p 1935:1935 -p 8080:80 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp --name my_docker official:master \ -v /home/docker/media/bin:/opt/media/bin -v /home/docker/conf:/opt/media/conf #这个命令的各个参数含义如下: #-d 让 Docker 容器在后台运行 #-p 1935:1935:将主机的1935端口映射到容器的1935端口 #-p 8080:80:将主机的8080端口映射到容器的80端口 #-p 8554:554:将主机的8554端口映射到容器的 554 端口 #-p 10000:10000:将主机的10000端口映射到容器的 10000 端口 #-p 10000:10000/udp:将主机的 10000 端口映射到容器的 10000 端口,并设置为 UDP 协议 #-p 8000:8000/udp:将主机的 8000 端口映射到容器的 8000 端口,并设置为 UDP 协议 #--name my_dockert:将容器命名为 my_docker # official:master:要运行的容器镜像 #-v /home/docker/media/bin:/opt/media/bin 映射本地目录到容器 #-v /home/docker/conf:/opt/media/conf 映射本地目录到容器 脚本调用 #判断是否安装了docker if ! [ -x "$(command -v docker)" ]; then echo 'Docker is not installed.' exit 1 else echo "Docker has installed." fi #判断容器是否存在 container_name="test_container" if [[ "$(sudo docker ps -a | grep ${container_name} | grep -v 'grep')" != "" ]]; then echo "${container_name} 容器已经存在" else echo "${container_name} 容器不存在" fi #判断容器是否在运行 if [ "$(sudo docker inspect -f '{{.State.Running}}' ${container_name} 2>/dev/null)" == "true" ]; then echo "${container_name} 容器正在运行" else echo "${container_name} 容器停止运行" fi #判断镜像是否存在 if [[ "$(sudo docker images -q ${image_name} 2> /dev/null)" != "" ]];then echo "'${image_name}' docker image has loaded" else echo "'${image_name}' docker image not loaded" fi 常见问题解析

1.Docker容器之间会出现端口冲突吗? 会, 我们可以通过端口映射来解决这个问题, 在容器启动时,可以使用Docker CLI或Docker Compose配置将容器内部的端口映射到宿主机的不同端口上。这样,即使多个容器暴露相同的端口,也可以通过不同的映射端口来避免端口冲突。 这样,在不同的容器中,宿主机的端口相同,但是容器的内部端口不会冲突。同时, 可以使用不同的宿主机端口来映射同一容器的多个端口,这样可以更灵活地管理端口。需要注意的是,当多个容器使用相同的宿主机端口进行映射时,宿主机的端口可能会出现冲突。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有